//+------------------------------------------------------------------+ //| Ten Stochs Wave EA.mq4 | //| Copyright © 2008, TradingSytemForex | //| http://www.tradingsystemforex.com | //+------------------------------------------------------------------+ #property copyright "Copyright © 2008, TradingSytemForex" #property link "http://www.tradingsystemforex.com" #define OrSt "Ten Stochs Wave EA" extern string STO="---------------- Stochs"; extern double First_Stoch_KP=4; extern double Stoch_PERIOD=2; extern double Stoch_Slowing=2; extern double Hig_l=80; extern double Lo_l =20; extern string RSI_Settings = "---------- RSI Filter Settings"; extern bool UseRSIforOpen =true; extern int RSIPeriod = 14, RSIPrice = 1; extern int RSIBuySig = 55, RSISellSig = 45; extern string STL="---------------- Level"; extern bool UseHighLevelforClose=true; //extern bool UseDownLevelforClose=true; //extern double DownLevel_close_buy=79; // < High_l extern double HighLevel_close_buy=98; // max //extern double DownLevel_close_sell=21; // > Low_l extern double HighLevel_close_sell=3; // mini extern string SFC="---------------- Stoch for close"; extern bool UseSFCwithClose=true; extern int KPeriodclose=8; extern int DPeriodclose=3; extern int Slowingclose=3; extern int MAStoch=0; //0-simple;1-exponential;2-smoothed;3-linear weight extern int PriceStoch=0; //1-close/close ; 0-low/High extern bool UseDistance=false; extern double Distance=5; extern string timeframe="5-5min,15-15min,30-30min,60-1h,240-4h,"; extern double Timeframe=5; // 5-5min,15-15min,30-30min,60-1h,240-4h, extern bool closestochonthesametimeframe=true; // extern string LM="---------------- Lot Management"; extern double Lots=0.1; extern bool MM=false; //money management extern double Risk=10; //risk in percentage extern string TSTB="---------------- TP SL TS BE"; bool RealSL_Enabled=false; int RealSL=5; //stop loss under 15 pīps bool RealTP_Enabled=false; int RealTP=10; //take profit under 10 pīps extern int SL=0; //stop loss extern int TP=0; //take profit extern int TS=0; //trailing stop extern int TS_Step=1; //trailing stop step extern int BE=0; //breakeven extern string EXT="---------------- Extras"; extern bool Reverse=false; bool Add_Positions=false; //positions cumulated int MaxOrders=100; //maximum number of orders extern int Magic=0; extern string Safety="Equity Baskett"; extern bool UseMargincut = true; extern double Margincutoff = 50; // Expert will stop trading if equity level decreases to that level. extern bool Usetarget = true; extern bool Usebasket = true; extern double TargetEquity =1000000; //value of win extern double BasketLoss =10000; //value of loses extern int MaxTradePerBar=1; datetime Time0;int TradePerBar=0;int BarCount=-1; int init(){Time0=Time[0];return(0);} int deinit(){return(0);} int Slip=3;static int TL=0;double MML=0; // expert start function int start(){int j=0,limit=1; double BV=0,SV=0; double STOM1,STOM2,STOM3,STOM4,STOM5,STOM6,STOM7,STOM8,STOM9,STOM10,czas,High_l,Low_l; int x; if(CntO(OP_BUY,Magic)>0) TL=1;if(CntO(OP_SELL,Magic)>0) TL=-1;for(int i=1;i<=limit;i++){ //string stopbuy="false",stopsell="false"; //stopcrossbuy="false",stopcrosssell="false",stopdownbuy="false",stopdownsell="false",stophighbuy="false",stophighsell="false"; STOM1=iStochastic(NULL,0,First_Stoch_KP,Stoch_PERIOD,Stoch_Slowing,MODE_SMA,0,MODE_MAIN,i); STOM2=iStochastic(NULL,0,First_Stoch_KP+1,Stoch_PERIOD,Stoch_Slowing,MODE_SMA,0,MODE_MAIN,i); STOM3=iStochastic(NULL,0,First_Stoch_KP+2,Stoch_PERIOD,Stoch_Slowing,MODE_SMA,0,MODE_MAIN,i); STOM4=iStochastic(NULL,0,First_Stoch_KP+3,Stoch_PERIOD,Stoch_Slowing,MODE_SMA,0,MODE_MAIN,i); STOM5=iStochastic(NULL,0,First_Stoch_KP+4,Stoch_PERIOD,Stoch_Slowing,MODE_SMA,0,MODE_MAIN,i); STOM6=iStochastic(NULL,0,First_Stoch_KP+5,Stoch_PERIOD,Stoch_Slowing,MODE_SMA,0,MODE_MAIN,i); STOM7=iStochastic(NULL,0,First_Stoch_KP+6,Stoch_PERIOD,Stoch_Slowing,MODE_SMA,0,MODE_MAIN,i); STOM8=iStochastic(NULL,0,First_Stoch_KP+7,Stoch_PERIOD,Stoch_Slowing,MODE_SMA,0,MODE_MAIN,i); STOM9=iStochastic(NULL,0,First_Stoch_KP+8,Stoch_PERIOD,Stoch_Slowing,MODE_SMA,0,MODE_MAIN,i); STOM10=iStochastic(NULL,0,First_Stoch_KP+9,Stoch_PERIOD,Stoch_Slowing,MODE_SMA,0,MODE_MAIN,i); {if(UseSFCwithClose && closestochonthesametimeframe==true) {if(Timeframe==5){czas=PERIOD_M5;x=300000;}if(Timeframe==15){czas=PERIOD_M15;x=900000;}if(Timeframe==30){czas=PERIOD_M30;x=1800000;}if(Timeframe==60){czas=PERIOD_H1;x=3600000;}if(Timeframe==240){czas=PERIOD_H4;x=14400000;}} else{if(Timeframe==5){czas=PERIOD_M1;x=300000;}if(Timeframe==15){czas=PERIOD_M5;x=900000;}if(Timeframe==30){czas=PERIOD_M15;x=1800000;}if(Timeframe==60){czas=PERIOD_M30;x=3600000;}if(Timeframe==240){czas=PERIOD_H1;x=14400000;}}} double RSI = iRSI(NULL,0,RSIPeriod,RSIPrice,0); string RSIFIB="false";string RSIFIS="false"; if(UseRSIforOpen==true){if(RSI>RSIBuySig)RSIFIB="true";if(RSISC2&&(UseDistance==false||(UseDistance&&(SCB-SCA)>=Distance*Point))){stopcrossbuy="true";} //if(UseSFCwithClose&&SCA>SCB&&SC2>SC1&&(UseDistance==false||(UseDistance&&(SCA-SCB)>=Distance*Point))){stopcrosssell="true";} //if(UseDownLevelforClose&&SCADownLevel_close_sell){stopdownsell="true";} //if(UseHighLevelforClose&&SCA>HighLevel_close_buy){stophighbuy="true";} //if(UseHighLevelforClose&&SCASC2&&SCA>Hig_l&&STOM1>Hig_l && STOM2>Hig_l && STOM3>Hig_l && STOM4>Hig_l && STOM5>Hig_l && STOM6>Hig_l && STOM7>Hig_l && STOM8>Hig_l && STOM9>Hig_l && STOM10>Hig_l){High_l=100;}else {High_l=Hig_l ;} if(SCA>SCB&&SC2>SC1&&UseSFCwithClose&&SCAHigh_l && STOM2>High_l && STOM3>High_l && STOM4>High_l && STOM5>High_l && STOM6>High_l && STOM7>High_l && STOM8>High_l && STOM9>High_l && STOM10>High_l&&TradePerBar<=MaxTradePerBar){if(Reverse) {SV=1;PlaySound("alert.wav");} else {BV=1;PlaySound("alert.wav");} break;}} // expert money management if(MM){if(Risk<0.1 || Risk>100) {Comment("Invalid Risk Value."); return(0);} else {MML=MathFloor((AccountFreeMargin() *AccountLeverage()*Risk*Point*100)/(Ask*MarketInfo(Symbol(),MODE_LOTSIZE)*MarketInfo(Symbol(),MODE_MINLOT )))*MarketInfo(Symbol(),MODE_MINLOT );}} if(MM==false){MML=Lots;} // expert init positions int cnt=0,OP=0,OS=0,OB=0,CS=0,CB=0,CLoseBuy=0,CLoseSel=0,CLHLCB=0,CLHLCS=0; OP=0;for(cnt=0; cnt=1){OS=0; OB=0;}OB=0;OS=0;CB=0;CS=0; // expert conditions to open position if(SV>0&&TradePerBar<=MaxTradePerBar){OS=1;OB=0;}if(BV>0&&TradePerBar<=MaxTradePerBar){OB=1;OS=0;} // safety if((UseMargincut&&AccountFreeMargin()< Margincutoff) ||(Usetarget&&AccountEquity()>=TargetEquity) || (Usebasket&&AccountEquity()<=(AccountBalance()-BasketLoss) )) { Comment( "\nSTOP TRADING....", "\nAccountEquity = ", AccountEquity(), "\nTarget Balance or Target Loss or FreeMargin hit !!!!!"); closeall(); return(0); } // expert conditions to close position //{if(UseSFCwithClose ) // {if(Timeframe==5)x=300000;if(Timeframe==15)x=900000;if(Timeframe==30)x=1800000;if(Timeframe==60)x=3600000;}} if(SCASC2&&(UseDistance==false||(UseDistance&&(SCB-SCA)>=Distance*Point))){CLoseBuy=1;} if(SCA>SCB&&SC2>SC1&&(UseDistance==false||(UseDistance&&(SCA-SCB)>=Distance*Point))){CLoseSel=1;}//} // if(SCADownLevel_close_sell){CLDLCS=1;} if(SCA>HighLevel_close_buy){CLHLCB=1;} if(SCA0) ||(UseSFCwithClose&&CLoseBuy==1)|| (CLHLCB==1&&UseHighLevelforClose)|| (RealSL_Enabled && (OrderOpenPrice()-Bid)/Point>=RealSL)||(RealTP_Enabled && (Ask-OrderOpenPrice())/Point>=RealTP)){CB=1;} if((BV>0) ||(UseSFCwithClose&&CLoseSel==1)|| (CLHLCS==1&&UseHighLevelforClose)|| (RealSL_Enabled && (Ask-OrderOpenPrice())/Point>=RealSL)||(RealTP_Enabled && (OrderOpenPrice()-Bid)/Point>=RealTP)){CS=1;} for(cnt=0;cnt0)TradePerBar++;return(0);}} if(OB==1){if (TP==0) TPI=0; else TPI=Ask+TP*Point;if(SL==0) SLI=0; else SLI=Ask-SL*Point;if(Time0!=Time[0]){TK=OrderSend(Symbol(),OP_BUY,MML,Ask,Slip,SLI,TPI,OrSt,Magic,0,Lime);OB=0;Comment("buy order opened","\n","magic number : ",Magic); Time0=Time[0];if(TK>0)TradePerBar++;return(0);}}} for(j=0;j0){if((pb-OrderOpenPrice())>BE*pp){if((OrderStopLoss()-OrderOpenPrice())<0){ModSL(OrderOpenPrice()+0*pp);}}} if(TS>0){if((pb-OrderOpenPrice())>TS*pp){if(OrderStopLoss()0){if((OrderOpenPrice()-pa)>BE*pp){if((OrderOpenPrice()-OrderStopLoss())<0){ModSL(OrderOpenPrice()-0*pp);}}} if (TS>0){if (OrderOpenPrice()-pa>TS*pp){if (OrderStopLoss()>pa+(TS+TS_Step-1)*pp || OrderStopLoss()==0){ModSL(pa+TS*pp);return;}}}}} //expert stoploss void ModSL(double ldSL){bool fm;fm=OrderModify(OrderTicket(),OrderOpenPrice(),ldSL,OrderTakeProfit(),0,CLR_NONE);} //expert add positions function bool AddP(){int _num=0; int _ot=0; for (int j=0;j_ot) _ot=OrderOpenTime();}} if(_num==0) return(true);if(_num>0 && ((Time[0]-_ot))>0) return(true);else return(false);} // void closeall() { for (int cnt = OrdersTotal()-1 ; cnt >= 0; cnt--) { OrderSelect(cnt,SELECT_BY_POS,MODE_TRADES); if (OrderSymbol() == Symbol() && OrderMagicNumber() == Magic && OrderCloseTime()==0) { if(OrderType()==OP_BUY) OrderClose(OrderTicket(),OrderLots(),Bid,3,Blue); if(OrderType()==OP_SELL) OrderClose(OrderTicket(),OrderLots(),Ask,3,Red); } }}